#ifndef ARRAYITERADOR_H
#define ARRAYITERADOR_H

template <class T>
class Array;

#include "Iterador.h"

typedef unsigned int nat;

template <class T>
class ArrayIterador : public Iterador<T>
{
public:
	ArrayIterador(const Array<T>& iterable);
	ArrayIterador(const Array<T>& iterable, nat largo);
	virtual ~ArrayIterador();

	virtual void Reiniciar();
	virtual bool HayElemento() const;
	virtual const T& ElementoActual() const;
	virtual void Avanzar();

private:
	Array<T> iterable;
	nat posicion;
	nat largo;

	void Inicializar(const Array<T>& iterable, nat largo);
};

#include "ArrayIterador.cpp"

#endif